#ifndef RBN_H
#define RBN_H

#include <cstddef>

namespace RBN {

class RbnNode;

/* RBN */
class Rbn {
public:
	/* new/delete, for safe delition accross libraries/app */
	static void* operator new(size_t size);
	static void  operator delete(void* memory);

	/* ctor */
	Rbn(int nInputs, int nNodes, RbnNode** nodes);

	/* dtor */
	~Rbn();

	/* update */
	void update();

	/* output size */
	int getOutputSize() const;

	/* outputs */
	int* getOutputs() const;

private:
	int       _nInputs; /* input count */
	int       _nNodes;  /* node count  */
	RbnNode** _nodes;   /* nodes       */

	int* _inputs;  /* inputs  */
	int* _outputs; /* outputs */
};

} // RBN

#endif // RBN_H

